import numpy as np

def initialization(N, Dim, UB, LB):
    # 处理边界条件，生成初始种群
    if isinstance(UB, (int, float)):
        # 若UB为标量，所有维度使用相同边界
        X = np.random.rand(N, Dim) * (UB - LB) + LB
    else:
        # 若UB为数组，每个维度使用不同边界
        X = np.zeros((N, Dim))
        for i in range(Dim):
            Ub_i = UB[i]
            Lb_i = LB[i]
            X[:, i] = np.random.rand(N) * (Ub_i - Lb_i) + Lb_i
    return X